<?php

namespace App\Admin\RowActions;

use App\Models\Test;
use App\Models\User;
use Dcat\Admin\Grid\RowAction;
use Illuminate\Http\Request;

class ResetUserTest extends RowAction
{
    /**
     * 标题
     *
     * @return string
     */
    public function title()
    {
        return '清除考试记录';
    }

    /**
     * 设置确认弹窗信息，如果返回空值，则不会弹出弹窗
     *
     * 允许返回字符串或数组类型
     *
     * @return array
     */
    public function confirm()
    {
        /** @var User $user */
        $user = $this->row;

        return [
            // 确认弹窗 title
            "您确定要清除该用户考试记录吗？",
            // 确认弹窗 content
            '用户名：' . $user->username,
        ];
    }

    /**
     * 处理请求
     *
     * @param Request $request
     *
     * @return \Dcat\Admin\Actions\Response
     */
    public function handle(Request $request)
    {
        // 获取当前行ID
        $id = $this->getKey();

        // 获取 parameters 方法传递的参数
        $username = $request->get('username');

        // 清除考试记录
        Test::query()->where('user_id', $id)->delete();

        // 返回响应结果并刷新页面
        return $this->response()->success('清除成功！用户名：' . $username)->refresh();
    }

    /**
     * 设置要 POST 到接口的数据
     *
     * @return array
     */
    public function parameters()
    {
        /** @var User $user */
        $user = $this->row;

        return [
            'username' => $user->username,
        ];
    }
}
